package com.all.play.mymvptwo.view;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.all.play.mymvptwo.presenter.BasePresenter;

/**
 * Created by 聪明一只哈 on 2018/5/16.
 * Time: 2018/5/16  13:07
 *
 *
 * 对activity进行抽取成父类,这个父类中的操作是-->view层与P层关联起来
 * 通过new P层对象();来获得P层对象,然后 P层对象.attachView(View层)
 * 进行关联
 *
 *抽取父类时,使用了泛型来进行对子类类型的限制,使其不同的view层对象可以共享一个父类
 *
 * -------------------------------------------------------
 *          <   V         ,   T extends BasePresenter<V>
 *            一个泛型     ,   另一个泛型
 * -------------------------------------------------------
 */
//                           这里的泛型使用类似于Map<T,V>
public abstract  class BaseActivity<V,T extends BasePresenter<V>> extends AppCompatActivity{

    public T dataPersenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        dataPersenter=creatPresenter();
        dataPersenter.attachView((V) this);

    }

    //V层对P层的选择,使用回调,抽象方法
    protected abstract T creatPresenter();


    @Override
    protected void onDestroy() {
        super.onDestroy();
        dataPersenter.detachView();
    }

}
